export function handleResponse (meta, resp) {
  let result = resp.data
  if (resp.status === 200) {
    // 查询成功
    if (meta.pagination) {
      // 分页查询
      meta.vm.pagination.total = result.total
      meta.vm[meta.prop] = result.data
    } else if (result.data) {
      // 查询全部
      meta.vm[meta.prop] = result.data
    } else {
      meta.vm[meta.prop] = result
    }
  } else if (resp.status === 201 || resp.status === 204) {
    // 新增/修改/删除成功
    return 'ok'
  } else {
    // 操作失败
    meta.vm.$message.error(result.message)
  }
}

export function deleteConfirm (vm, batch) {
  let tips = '此操作将永久删除' + (batch ? '这些' : '此') + '记录，是否继续？'
  return vm.$confirm(tips, '提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
  })
}

/**
 * @param {Object} data     进行 json 序列化的 js 对象
 */
export function toJsonString (data) {
  let jsonStr = JSON.stringify(data)
  // console.log(jsonStr)
  jsonStr.replace('"', '\\"')
  // console.log(jsonStr)
  return jsonStr
}

/**
 * @param {Array} array   原数组
 * @param {String} key    作为键的属性名
 * @param {String} value  作为值的属性名
 */
export function toMap (array, key, value) {
  if (!Array.isArray(array)) {
    return
  }
  let map = new Map()
  array.forEach(e => {
    map.set(e[key], e[value])
  })
  return map
}

export function dateFormat (fmt, date) {
  let ret
  const opt = {
    'y+': date.getFullYear().toString(), // 年
    'M+': (date.getMonth() + 1).toString(), // 月
    'd+': date.getDate().toString(), // 日
    'H+': date.getHours().toString(), // 时
    'm+': date.getMinutes().toString(), // 分
    's+': date.getSeconds().toString() // 秒
    // 有其他格式化字符需求可以继续添加，必须转化成字符串
  }
  for (let k in opt) {
    ret = new RegExp('(' + k + ')').exec(fmt)
    if (ret) {
      fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')))
    }
  }
  return fmt
}
